package log_api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/res"
	"giv-vue-blog/plugins/log_stash"
)

// LogDelView 删除日志
// @Tags 日志管理
// @Summary 删除日志
// @Description 删除日志
// @Param data body models.DelIDList true "删除日志的ID列表"
// @Router /api/log_del [post]
// @Produce json
// @Success 200 {string} json "{"code": 0, "message": "请求成功"}"
// @Failure 400 {string} json "{"code": 1, "message": "参数错误"}"
// @Failure 401 {string} json "{"code": 3, "message": "未授权访问"}"
// @Failure 500 {string} json "{"code": 2, "message": "服务器内部错误"}"
func (LogApi) LogDelView(c *gin.Context) {
	//TODO: 删除日志 通过路由限制了只有管理员用户才能删除 其余用户不能删除
	log := log_stash.NewLogByGin(c)
	var ad models.DelIDList
	err := c.ShouldBindJSON(&ad)
	if err != nil {
		res.FailedWithError(err, &ad, c)
		log.Error(fmt.Sprintf("参数绑定失败,%s", err.Error()))
		return
	}
	var LogList []log_stash.LogStashModel
	count := global.DB.Find(&LogList, ad.DelIDList).RowsAffected
	if count == 0 {
		res.FailedWithMsg("不存在的日志", c)
		log.Error("不存在的日志")
		return
	}
	err = global.DB.Delete(&LogList).Error
	if err != nil {
		res.FailedWithMsg("删除日志失败", c)
		log.Error("删除日志失败")
		return
	}
	res.OkWithMsg(fmt.Sprintf("共删除 %d 条日志", count), c)
	log.Info(fmt.Sprintf("共删除 %d 条日志", count))
}
